home *** CD-ROM | disk | FTP | other *** search
- function G_NavWatcher(opt_filterSpurious) {
- this.debugZone = "navwatcher";
- this.filterSpurious_ = !!opt_filterSpurious;
- this.events = G_NavWatcher.events; // Convenience pointer
- this.registrar_ = new EventRegistrar(this.events);
- var wp = Ci.nsIWebProgress;
- var wpService = Cc["@mozilla.org/docloaderservice;1"].getService(wp);
- wpService.addProgressListener(this, wp.NOTIFY_STATE_ALL);
- }
- G_NavWatcher.events = {
- DOCNAVSTART: "docnavstart",
- };
- G_NavWatcher.prototype.QueryInterface = function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIWebProgressListener) ||
- iid.equals(Ci.nsISupportsWeakReference))
- return this;
- throw Components.results.NS_ERROR_NO_INTERFACE;
- }
- G_NavWatcher.prototype.registerListener = function(eventType,
- listener) {
- this.registrar_.registerListener(eventType, listener);
- }
- G_NavWatcher.prototype.removeListener = function(eventType,
- listener) {
- this.registrar_.removeListener(eventType, listener);
- }
- G_NavWatcher.prototype.fire = function(eventType, e) {
- this.registrar_.fire(eventType, e);
- }
- G_NavWatcher.prototype.isSpurious_ = function(url) {
- return (url == "about:blank" ||
- url == "about:config" ||
- url.indexOf("chrome://") == 0 ||
- url.indexOf("file://") == 0 ||
- url.indexOf("jar:") == 0);
- }
- G_NavWatcher.prototype.onStateChange = function(webProgress,
- request,
- stateFlags,
- status) {
- var wp = Ci.nsIWebProgressListener;
- if (stateFlags & wp.STATE_START &&
- stateFlags & wp.STATE_IS_REQUEST &&
- request.loadFlags & Ci.nsIChannel.LOAD_DOCUMENT_URI) {
- var url;
- try {
- url = request.name;
- } catch(e) { return; }
- if (!this.filterSpurious_ || !this.isSpurious_(url)) {
- G_Debug(this, "firing docnavstart for " + url);
- var eventObj = {
- "request": request,
- "url": url,
- };
- this.fire(this.events.DOCNAVSTART, eventObj);
- }
- }
- }
- G_NavWatcher.prototype.onLocationChange = function(webProgress,
- request,
- location) { }
- G_NavWatcher.prototype.onProgressChange = function(webProgress,
- request,
- curSelfProgress,
- maxSelfProgress,
- curTotalProgress,
- maxTotalProgress) { }
- G_NavWatcher.prototype.onSecurityChange = function(webProgress,
- request,
- state) { }
- G_NavWatcher.prototype.onStatusChange = function(webProgress,
- request,
- status,
- message) { }
- G_NavWatcher.prototype.onLinkIconAvailable = function(browser, aHref) { }
-